#!/bin/bash

# 擎动智造自动化执行平台 - 停止脚本

echo "========================================"
echo "🛑 停止擎动智造自动化执行平台"
echo "========================================"
echo ""

# 获取脚本所在目录
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"

PID_FILE="$SCRIPT_DIR/.web_server.pid"
PORT=10001

# 从PID文件读取进程ID
if [ -f "$PID_FILE" ]; then
    PID=$(cat "$PID_FILE")
    
    if ps -p $PID > /dev/null 2>&1; then
        echo "🔍 找到运行中的服务 (PID: $PID)"
        echo "⏳ 正在停止服务..."
        
        # 优雅停止
        kill $PID 2>/dev/null
        
        # 等待进程结束
        for i in {1..10}; do
            if ! ps -p $PID > /dev/null 2>&1; then
                echo "✅ 服务已停止"
                rm -f "$PID_FILE"
                break
            fi
            sleep 1
        done
        
        # 如果还在运行，强制停止
        if ps -p $PID > /dev/null 2>&1; then
            echo "⚠️  强制停止服务..."
            kill -9 $PID 2>/dev/null
            rm -f "$PID_FILE"
            echo "✅ 服务已强制停止"
        fi
    else
        echo "⚠️  PID文件中的进程不存在"
        rm -f "$PID_FILE"
    fi
else
    echo "⚠️  未找到PID文件"
fi

# 检查端口是否还被占用
if lsof -Pi :$PORT -sTCP:LISTEN -t >/dev/null 2>&1; then
    echo "⚠️  端口 $PORT 仍被占用，尝试清理..."
    PIDS=$(lsof -ti:$PORT)
    if [ ! -z "$PIDS" ]; then
        echo "🔍 找到占用端口的进程: $PIDS"
        echo "$PIDS" | xargs kill -9 2>/dev/null
        echo "✅ 端口已清理"
    fi
else
    echo "✅ 端口 $PORT 未被占用"
fi

# 清理日志文件（可选）
if [ -f "$SCRIPT_DIR/server.log" ]; then
    LOG_SIZE=$(du -h "$SCRIPT_DIR/server.log" | cut -f1)
    echo ""
    echo "📝 日志文件大小: $LOG_SIZE"
    echo "💡 如需清理日志: rm $SCRIPT_DIR/server.log"
fi

echo ""
echo "========================================"
echo "✨ 服务已完全停止"
echo "========================================"
echo ""

